package com.zrz.util;

import com.google.gson.Gson;
import com.google.gson.JsonArray;

import java.util.ArrayList;
import java.util.List;

/**
 * json工具类.
 * @author 马良
 * @since 2018-05-15
 */
public final class Json {
    private static Gson gson = new Gson();

    /**
     * 对象转json.
     * @param content
     * @return
     */
    public static String toJson(Object content) {
        return content == null ? null : gson.toJson(content);
    }

    /**
     * json转对象.
     * @param json
     * @param type
     * @param <T>
     * @return
     */
    public static <T> T toObject(String json, Class<T> type) {
        return gson.fromJson(json, type);
    }

    /**
     * json转列表.
     * @param json
     * @param type
     * @param <T>
     * @return
     */
    public static <T> List<T> toList(String json, Class<T> type) {
        JsonArray jsonArray = toObject(json, JsonArray.class);
        if (jsonArray == null) {
            return new ArrayList<>();
        }

        List<T> list = new ArrayList<>(jsonArray.size());
        jsonArray.forEach(jsonItem -> {
            String jsonObject = jsonItem.getAsString();
            T item = gson.fromJson(jsonObject, type);
            list.add(item);
        });

        return list;
    }
}
